package com.xbongbong.saas.enums.subform;

import com.xbongbong.paas.enums.IndexTypeEnum;

import java.util.Objects;

/**
 *
 * @author 魏荣杰
 * @date 2020/8/28 11:25
 * @since
 * @version
 */
public enum SubFormTransferEnum {

    ;


    public static String getEsAttrByIndexTypeAndDbAttr(IndexTypeEnum indexTypeEnum, String dbAttr) {
        String esAttrByDbAttr = null;
        switch (indexTypeEnum) {
            case IDX_SAAS_CUSTOMER_TEAM:
            case IDX_SAAS_CUSTOMER_TEAM_SPECIAL:
                esAttrByDbAttr = CustomerTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_CONTRACT_TEAM:
                esAttrByDbAttr = ContractTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_QUOTATION_TEAM:
                esAttrByDbAttr = QuotationTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_CONTACT_TEAM:
                esAttrByDbAttr = ContactTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PAYMENT_TEAM:
                esAttrByDbAttr = PaymentTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PAYMENT_SHEET_TEAM:
                esAttrByDbAttr = PaymentSheetTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PAYMENT_TASK_TEAM:
                esAttrByDbAttr = PaymentTaskTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PRODUCTION_ORDER_TEAM:
                esAttrByDbAttr = ProductionOrderTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PAY_PLAN_TEAM:
                esAttrByDbAttr = PayPlanTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PAYPLAN_SHEET_TEAM:
                esAttrByDbAttr = PayPlanSheetTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_COMMUNICATE_PLAN_TEAM:
                esAttrByDbAttr = CommunicatePlanTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_OPPORTUNITY_TEAM:
                esAttrByDbAttr = OpportunityTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_BOM_TEAM:
                esAttrByDbAttr = BomTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PURCHASE_TEAM:
                esAttrByDbAttr = PurchaseTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_SUPPLIER_CONTACT_TEAM:
                esAttrByDbAttr = SupplierContactTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_SUPPLIER_TEAM:
                esAttrByDbAttr = SupplierTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PRODUCT_TEAM:
                esAttrByDbAttr = ProductTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SERVICE_PROJECT_TEAM:
                esAttrByDbAttr = VisibleRangeTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_COMPETITOR_TEAM:
                esAttrByDbAttr = CompetitorTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_REFUND_TEAM:
                esAttrByDbAttr = RefundTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_WORK_ORDER_TEAM:
                esAttrByDbAttr = WorkOrderTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_WORK_ORDER_CC:
                esAttrByDbAttr = WorkOrderCcTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_PAYMENT_BALANCE_TEAM:
                esAttrByDbAttr = PaymentBalanceTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_PAY_BALANCE_TEAM:
                esAttrByDbAttr = PayBalanceTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_CONTRACT_PRODUCT:
                esAttrByDbAttr = ContractProductSubFormEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_CONTRACT_PERFORMANCE:
                esAttrByDbAttr = ContractPerformanceSubFormEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PRODUCT_WAREHOUSE:
                esAttrByDbAttr = ProductWarehouseSubFormEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PRODUCT_STOCK_INFO:
                esAttrByDbAttr = ProductStockSubFormEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_CLUE_TEAM:
                esAttrByDbAttr = ClueTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SAAS_MARKET_ACTIVITY_TEAM:
                esAttrByDbAttr = MarketActivityTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_FORM_DATA_TEAM:
                esAttrByDbAttr = PaasTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_WORK_ORDER_V2_TEAM:
                esAttrByDbAttr = WorkOrderV2TeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_RECEIPT_ORDER_TEAM:
                esAttrByDbAttr = ReceiptOrderTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            case IDX_SLA_LOG_DATA_TEAM:
                esAttrByDbAttr = DefaultTeamEnum.getEsAttrByDbAttr(dbAttr);
                break;
            default:
                break;
        }

        if (Objects.isNull(esAttrByDbAttr)) {
            return dbAttr;
        }

        return esAttrByDbAttr;
    }

    /**
     * 获取 es 返回字段 fieldList
     * @param indexTypeEnum
     * @param dbAttr
     * @return
     * @author xingxing.xiao
     * @date 2020/09/28 11:01
     */
    public static String getFieldAttrByIndexTypeAndDbAttr(IndexTypeEnum indexTypeEnum, String dbAttr) {
        String esAttrByDbAttr = null;
        switch (indexTypeEnum) {
            case IDX_SAAS_CUSTOMER_TEAM:
                esAttrByDbAttr = CustomerTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_CONTRACT_TEAM:
                esAttrByDbAttr = ContractTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_QUOTATION_TEAM:
                esAttrByDbAttr = QuotationTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_CONTACT_TEAM:
                esAttrByDbAttr = ContactTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PAYMENT_TEAM:
                esAttrByDbAttr = PaymentTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PAYMENT_SHEET_TEAM:
                esAttrByDbAttr = PaymentSheetTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PAYMENT_TASK_TEAM:
                esAttrByDbAttr = PaymentTaskTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PRODUCTION_ORDER_TEAM:
                esAttrByDbAttr = ProductionOrderTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PAY_PLAN_TEAM:
                esAttrByDbAttr = PayPlanTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PAYPLAN_SHEET_TEAM:
                esAttrByDbAttr = PayPlanSheetTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_COMMUNICATE_PLAN_TEAM:
                esAttrByDbAttr = CommunicatePlanTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_OPPORTUNITY_TEAM:
                esAttrByDbAttr = OpportunityTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_BOM_TEAM:
                esAttrByDbAttr = BomTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PURCHASE_TEAM:
                esAttrByDbAttr = PurchaseTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_SUPPLIER_CONTACT_TEAM:
                esAttrByDbAttr = SupplierContactTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_SUPPLIER_TEAM:
                esAttrByDbAttr = SupplierTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PRODUCT_TEAM:
                esAttrByDbAttr = ProductTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SERVICE_PROJECT_TEAM:
                esAttrByDbAttr = VisibleRangeTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_REFUND_TEAM:
                esAttrByDbAttr = RefundTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_WORK_ORDER_TEAM:
                esAttrByDbAttr = WorkOrderTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_WORK_ORDER_CC:
                esAttrByDbAttr = WorkOrderCcTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_PAYMENT_BALANCE_TEAM:
                esAttrByDbAttr = PaymentBalanceTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_PAY_BALANCE_TEAM:
                esAttrByDbAttr = PayBalanceTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_CONTRACT_PRODUCT:
                esAttrByDbAttr = ContractProductSubFormEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_CONTRACT_PERFORMANCE:
                esAttrByDbAttr = ContractPerformanceSubFormEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PRODUCT_WAREHOUSE:
                esAttrByDbAttr = ProductWarehouseSubFormEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_PRODUCT_STOCK_INFO:
                esAttrByDbAttr = ProductStockSubFormEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_CLUE_TEAM:
                esAttrByDbAttr = ClueTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            case IDX_SAAS_MARKET_ACTIVITY_TEAM:
                esAttrByDbAttr = MarketActivityTeamEnum.getAttrConnectDataByDbAttr(dbAttr);
                break;
            default:
                break;
        }

        if (Objects.isNull(esAttrByDbAttr)) {
            return dbAttr;
        }

        return esAttrByDbAttr;
    }
}
